Concomitant with the wide spread use of computer networks and application services provided by network servers in today's society is the need to test, monitor, and evaluate the load capacity of such network servers, particularly in the context of providing application services requested by users.
Effective load testing of today's networks and associated application services requires a multiplicity of actual users simultaneously generating continuous transactions with any particular application available through a particular network server. It is, however, economically impracticable, both from a resource standpoint and a time standpoint, to conduct network load testing in such a manner.
Consider, for example, the resources required by an actual user in conducting one or more client-server transactions with a network server. FIG. 1 illustrates the hardware and application resources required for such client-server transactions. An actual user requires a computer PC that includes hardware for inputting requests, e.g., a keyboard for typing in the URL address of the network application to be accessed, hardware for displaying content, e.g., a monitor, and hardware for providing a communications interface with a network server computer NSC, e.g., a modem. A client application CA that includes a graphical user interface (GUI) with its associated drop-down menus and toolbars, e.g., a WEB browser such as Netscape Navigator, Microsoft Internet Explorer, or Opera, is stored on the personal computer PC and provides the necessary functionality for the user to conduct client-server transactions with a server application SA available from the network server computer NSC.
FIG. 2 illustrates a typical client-server transaction, using the resources illustrated in FIG. 1, wherein the actual user utilizes the client application CA, e.g., browser, stored on the computer PC to request HTML pages/files from the server application SA on a network server computer NSC, i.e., the actual user is surfing for information on the Internet. This client-server transaction consists of a series of defined protocol interactions between the browser (client application) and the server application, i.e., client requests and server responses to such client requests, in accordance with a standard protocol such as FTP (File Transfer Protocol). For example, referring to FIG. 2, the actual user initiates the protocol interactions defined for this particular client-server transaction by means of a request CR1 to connect to the network server computer NSC (by inputting the URL address “xyz” of the network server computer NSC via the client graphical user interface GUI, e.g., by keyboard inputs or clicking on a link). The network server computer NSC issues a response SR1 granting or denying this client request. Once connected to the network server computer NSC, the client requests that the server application SA be opened on a specific port number, e.g., “abc” (request CR2), and the server NSC responds by granting this request, i.e., response SR2. Next, the client requests a specific file, e.g., “www.mysite.com/myfile.html” by means of request CR3, and the server NSC responds by transmitting the requested file to the client computer PC. By means of client requests CR4 and CR5, and the server's responses thereto, i.e., responses SR4, SR5), the client-server transaction is voluntarily terminated by the user.
At any point in these protocol interactions, however, the server NSC can respond to any particular client request by means of an error message, i.e., the server denies a particular client request. Such a denial of a client request may be predicated on any number of diverse events, e.g., an authentication failure (initial request to establish a client-server relationship), a temporary lack of a server resource, e.g., CPU processing, memory, necessary to fulfill the client request, or a server application processing error. By way of example, refer to FIG. 3 which illustrates an error event occurring during the a client-server transaction of the type illustrated in FIG. 2. In this particular client-server transaction, the server NSC issues an error message, i.e., server response SR2E, in response to the client request CR2. A denial of a client request causes the client application CA to automatically terminate the protocol interactions, i.e., the client-server transaction, as illustrated by client request CR5 and the corresponding server response SR5 in FIG. 3. A premature termination of client-server transaction due to a denial of a client request/error message from the server NSC (or the lack of a response from the server NSC to a valid client request) is defined as an “error event”.
Client-server transactions such as the foregoing are resource intensive, the graphical interface and display engines of a browser client application consuming extensive memory and CPU processing resources to support the graphical user interface, processing and transmission of application requests, and the display of content provided by the server. A single web browser, for example, can utilize as much as 10 Megabytes of memory during a single client-server transaction.
Network load testing is currently accomplished using the client resources and client-server transaction format described in the preceding paragraphs in conjunction with utility macros that record the user's interactions with the client and server applications, e.g., these macros record all user input (keystrokes, mouse movements and clicks) and relevant responses from the server application during the client-server transaction. These recorded macros are subsequently replayed to review and evaluate the information recorded by these macros. Because the user's interactions with the client and server applications are predominately graphical, detecting and isolating errors is time consuming and labor intensive. Since application graphical user interfaces do not typically include any means or mechanism for detecting error events, the detection of error events is a visual process.
To scale the foregoing load-testing scheme to provide valid load-testing data requires a large number of simulated users to generate statistically-sufficient data. However, each such simulated user for the foregoing load-testing would require the entire client application, including the graphical user interface. Accordingly, to simulate 100 web users in accordance with this load-testing scheme would require the client computer to instantiate 100 instances of the client application and the network server application, which would typically overwhelm the memory resources of the client computer. Therefore, because of excessive resource requirements, the foregoing load-scheme is not scalable to the extent necessary to generate statistically-valid data for network load testing.
A need exists to provide a means for load-testing network servers and the associated application services provided thereby that is not resource intensive. Such a means should be capable of being implemented using a single computer system. Such means should concomitantly enable monitoring, detecting, and reporting of error events detected during network load-testing